package com.shujia;

import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 *  将驱动包信息以及数据库信息放入到配置文件中进行保存
 *
 */
public class JDBCDemo3 {
    public static void main(String[] args) {
        Connection conn = null;
        Statement state = null;
        try {
            //创建配置文件对象
            Properties prop = new Properties();
            //加载配置文件
            prop.load(new BufferedReader(new FileReader("mysql-jdbc/src/main/resources/mysqinfo.properties")));
            //根据key获取value值
            String driver = prop.getProperty("driver");
            String url = prop.getProperty("url");
            String username = prop.getProperty("username");
            String password = prop.getProperty("password");


            //第二种注册驱动的方式
            Class.forName(driver);
            //2.获取连接（表示JVM的进程和数据库进程之间的通道打开了，这属于进程之间的通信，使用完后记得关闭通道）。
            /**
             * public static Connection getConnection(String url, String user, String password)
             * url: 超文本传输协议
             *      jdbc:mysql://192.168.21.100:3306/bigdata27?useUnicode=true&characterEncoding=UTF-8
             * user: root
             * password: 123456
             */
            conn = DriverManager.getConnection(url, username, password);
            System.out.println("数据库连接成功："+conn);

            //3.获取数据库操作对象（专门执行sql语句的对象）
            //Statement createStatement() 创建一个 Statement对象，用于将SQL语句发送到数据库。
            state = conn.createStatement();

            //4.执行SQL语句（DQL,DML…）
            /**
             * Statement接口中有两个方法：
             * ResultSet executeQuery(String sql)  执行给定的SQL语句，该语句返回单个 ResultSet对象。  查询  另一大类操作
             * int executeUpdate(String sql)  执行给定的SQL语句，这可能是 INSERT ， UPDATE ，或 DELETE语句，或者不返回任何内容，如SQL DDL语句的SQL语句
             */
            String sql = "insert into goods values(1004,'手表',5000,'京东手表自营店')";
            int number = state.executeUpdate(sql); // 返回的是受影响的行数
            if(number==1){
                System.out.println("数据添加成功！！");
            }else {
                System.out.println("数据添加失败！！");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(state!=null){
                try {
                    state.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }

            if(conn!=null){
                try {
                    //关闭连接，释放资源
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
